home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / piclens-1.7.0.3459-fx-win.xpi / chrome / content / piclens.js < prev    next >
Text File  |  2008-06-16  |  4KB  |  106 lines

  1. // (c) 2008 Cooliris Inc. All rights reserved.
  2.  
  3. var Cc = Components.classes;
  4. var Ci = Components.interfaces;
  5.  
  6. function PicLensWindow()
  7. {
  8.     this.doc = window.document;
  9.     this.manager = Cc["@cooliris.com/piclens/manager;1"].getService(Ci.IPicLensManager);
  10.     this.isMac = Cc["@mozilla.org/xre/app-info;1"].getService(Ci.nsIXULRuntime).OS == "Darwin";
  11.     this.initToolbars();
  12. }
  13.  
  14. PicLensWindow.prototype = {
  15.     initToolbars: function() {
  16.         var toolbar = this.doc.getElementById("nav-bar");//this.isMac ? "PersonalToolbar" : "toolbar-menubar");
  17.         var alreadyInitialized = "piclens-initialized2";
  18.         if (toolbar.hasAttribute(alreadyInitialized)) {
  19.             return;
  20.         }
  21.         toolbar.collapsed = false;
  22.         var plButtonId = "piclens-toolbarbutton2";
  23.         this.insertToolbarItem(plButtonId);
  24.         this.insertIntoDefaultSet(plButtonId);
  25.         toolbar.setAttribute(alreadyInitialized, "1");
  26.         this.doc.persist(toolbar.id, alreadyInitialized);
  27.     },
  28.     insertToolbarItem: function(plButtonId) {
  29.         var navBar = this.doc.getElementById("nav-bar");
  30.         
  31.         // attempt to insert after the search box
  32.         try {
  33.             var afterThisId = "search-container";
  34.             var afterThisElem = this.doc.getElementById(afterThisId);
  35.             // if we didn't find the search somehow, we just put our button at the end
  36.             if(!afterThisElem) {
  37.                 var buttons = navBar.getAttribute("currentset").split(",");
  38.                 afterThisId = buttons[buttons.length - 1];
  39.                 afterThisElem = this.doc.getElementById(afterThisId);
  40.             }
  41.             
  42.             // if we found it, figure out the index of the entry
  43.             if(afterThisElem && this.doc.getElementById(plButtonId) == null) {
  44.                 var ret = navBar.insertItem(plButtonId, afterThisElem.nextSibling);
  45.                 navBar.setAttribute("currentset", navBar.currentSet);
  46.                 this.doc.persist("nav-bar", "currentset");
  47.             }   
  48.         }
  49.         catch(e) { }
  50.     },
  51.     insertIntoDefaultSet: function(plButtonId) {
  52.         var navBar = this.doc.getElementById("nav-bar");
  53.         var set = navBar.getAttribute("defaultset");
  54.         var prev = set.split(",");
  55.         var insertAt;
  56.         for (var i = 0; i != prev.length; ++i) {
  57.             if (prev[i] == "search-container") {
  58.                 insertAt = i;
  59.                 break;
  60.             }
  61.         }
  62.         
  63.         // otherwise insert at end
  64.         if (!insertAt) {
  65.             insertAt = prev.length;
  66.         }
  67.  
  68.         prev.splice(insertAt, 0, plButtonId);
  69.         var newSet = prev.join(",");
  70.         navBar.setAttribute("defaultset", newSet);
  71.         this.doc.persist("nav-bar", "defaultset");
  72.     }
  73. }
  74.  
  75. var gPicLensWindow = null;
  76.  
  77. window.addEventListener("load", function() {
  78.     // initialization
  79.     gPicLensWindow = new PicLensWindow();
  80.     
  81.     // register event listeners
  82.     gBrowser.addEventListener("DOMContentLoaded", function(event) {
  83.         var doc = event.originalTarget;
  84.         if (doc instanceof HTMLDocument) {
  85.             gPicLensWindow.manager.pageDomLoaded(window, doc);
  86.             doc.defaultView.addEventListener("unload", function() {
  87.                 gPicLensWindow.manager.pageUnloaded(doc);
  88.             }, true);
  89.         }
  90.     }, true);
  91.     gBrowser.addEventListener("load", function(event) {
  92.         var doc = event.originalTarget;
  93.         if (doc instanceof HTMLDocument) {
  94.             gPicLensWindow.manager.pageLoaded(doc);
  95.         }
  96.     }, true);
  97.     gBrowser.tabContainer.addEventListener("TabSelect", function(event) {
  98.         var tab = event.originalTarget;
  99.         gPicLensWindow.manager.tabSelectionChanged(window, tab.linkedBrowser.contentDocument);
  100.     }, false);
  101. }, false);
  102.  
  103. function launchPicLens() {
  104.     Cc['@cooliris.com/piclens/manager;1'].getService(Ci.IPicLensManager).launchFromToolbar();
  105. }
  106.